package com.lw.sbdemo2.mapper;

import com.lw.sbdemo2.common.base.BaseMapper;
import com.lw.sbdemo2.entity.TkErrorType;
import com.lw.sbdemo2.entity.TkUserErrorExamDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>标题: 用户错题细表服务 - 数据交互层</p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2019</p>
 * <p>公司: 山人行工作室</p>
 *
 * @version: 1.0
 * @author: LinWang
 * @date 2019-4-14
 */
@Mapper
public interface TkUserErrorExamDetailMapper extends BaseMapper<TkUserErrorExamDetail> {

    /**
     * 分页获取用户错题细表列表
     *
     * @param query                 搜索关键词
     * @param tkUserErrorExamDetail 查询实体
     * @return 用户列表
     */
    List<TkUserErrorExamDetail> findListPage(@Param("query") String query, @Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 分页获取用户错题细表列表
     *
     * @param tkUserErrorExamDetail 查询实体
     * @return 用户列表
     */
    List<TkUserErrorExamDetail> getClassExtract(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 获取错题类别数
     */
    List<TkErrorType> getTkTypeNum(@Param("userId") String userId);

    /**
     * 获取错题类别数
     */
    void deleteExam(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 获取某考试全部错题
     */
    int deleteExamAll(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 获取某考试全部错题
     */
    int deleteExamTypeAll(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 获取某考试全部错题
     */
    int updateExamTypeAll(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 获取某考试全部错题
     */
    int updateQue(@Param("model") TkUserErrorExamDetail tkUserErrorExamDetail);

    /**
     * 批量插入细表列表
     *
     * @param sysList
     * @return
     */
    void insertDetailBatch(@Param("sysList") List<TkUserErrorExamDetail> sysList);

    @Select("SELECT COUNT(1) FROM tk_user_error_exam_detail  t\n" +
            "WHERE QUESTION_ID IN  (SELECT sc.QUESTION_ID FROM (SELECT QUESTION_ID FROM tk_exam_product_detail t WHERE t.EXAM_ID = #{examId} ORDER BY t.QUESTION_type asc, t.QUESTION_NUMBER asc LIMIT #{nowNum})AS sc) \n" +
            "AND t.EXAM_ID = #{examId} AND t.USER_ID = #{userId}")
    Integer getErrorNum(@Param("examId") String examId, @Param("userId") String userId, @Param("nowNum") Integer nowNum);
}
